<?php
namespace cubox\database;

//AI写的，还没测试
use cubox\Database;
use cubox\provider\PDO;
use cubox\provider\SQLParam;
class Mssql extends Database
{ 

    use PDO;

    public function escapeName($name):string
    {
        return '[' . $name . ']';
    }
    
    public function escapeValue($value):string
    {
        if (is_null($value)) {
            return 'NULL';
        }

        if (is_bool($value)) {
            return $value? '1' : '0';
        }

        if (is_int($value)) {
            return $value;
        }

        if (is_float($value)) {
            return $value;
        }
    }
    public static function configParams():array{
        return array(
            'host' => array(
                'input' =>'input',
                'default' => 'localhost',
                'description' => 'MS SQL host'
            ),
            'port' => [
                'input' =>'input',
                'default' => 1433,
                'description' => 'MS SQL port.',
            ],
            'database' => array(
                'input' =>'input',
                'default' => '',
                'description' => 'Database name'
            ),
            'username' => array(
                'input' =>'input',
                'default' => '',
                'description' => 'MS SQL user'
            ),
            'password' => array(
                'input' =>'input',
                'default' => '',
                'description' => 'MS SQL password'
            ),
        );
    }


    protected function getSelectSql(string $table,SQLParam $sql):string{

        $sqlstr = parent::getSelectSql($table,$sql); 

        if ($sql->limit){
            if ($sql->limit[1]){
                $sqlstr .= ' OFFSET '.$sql->limit[0].' ROWS FETCH NEXT '.$sql->limit[1].' ROWS ONLY';
            }else{
                $sqlstr .= ' OFFSET '.$sql->limit[0].' ROWS';
            }
        }

        return $sqlstr;
    }





}